1. Field of the Invention
The present invention relates generally to graphics software, and in particular, to a method, apparatus, and article of manufacture for converting data from a database to a final presentation format.
2. Description of the Related Art
Computer-implemented graphics systems have been widely used by designers, illustrators, drafters, and engineers for a number of years to display and present information such as text and images to a user. For example, in the architectural, engineering, and construction (AEC) field, computer aided design (CAD) software may be utilized to assist architects, engineers, and contractors in designing a building, home, office, etc.
In graphics systems, objects such as doors, walls, windows, beams, joists, etc. may be selected and displayed by a user. Such objects persist within a database in the form of data (referred to as raw, pure, or abstract data). In the design process, such data is not the same as the presentation of that data.
For example, a door entity may be presented to a user as geometry representing a plan view or as some other geometry representing an elevation view in a graphical application or as text in a bill-of-materials application. Thus, although a door may be presented as a collection of lines on a video screen or on paper, the door object may also contain attributes, such as price, material, part number, vendor, etc., as well as spatial properties like location, extents, orientation, etc.
Another example is height data for terrain maps that may be presented to a user as a collection of nested contour lines (i.e., elevation lines) or as a collection of connected three-dimensional (3D) triangles. However, the height data may not be persisted as the lines or triangles. Instead, the height data may comprise a collection of (x,y) locations.
Thus, a given piece of data can be visualized in different ways depending on the application's requirements. Stylization is the process by which data is transformed from its pure/raw data form to the final presentation as desired by the application. Traditionally, this process has been a monolithic process or has been broken into fixed steps and assigned to specific locations in a tiered client-server environment. Such an approach lacks the flexibility to solve various client-server problems in an efficient manner.
One problem with the prior art is to efficiently support a diverse set of clients, from very thick to very thin while being able to reuse code between them. Take the example of a door that is being viewed by three different types of clients. Client A is very powerful and can be told about the door in the abstract terms of the original data and then generate presentations on the fly. Client B is less powerful and can only deal with managing a list of graphics primitives and must rely on the middle tier to perform the stylization of data to these graphic primitives. Client C is even less powerful and can only display bitmaps and must rely on the middle tier(s) to provide the stylization from data to bitmap. With monolithic stylization or smaller steps in fixed locations, these three paths from data to presentation can share no code.
Another problem is reproducing the stylization output at diverse destinations. If Client A, from above, wanted the middle tier to output its view of the data's presentation to a printer (e.g., a large E-sized plotter), it would either have to send its presentation back up to the middle tier and over to the print server or rely on code in the middle tier or on the print server to duplicate the stylization process of the data. The first option has severe performance problems in using bandwidth, and the second option is very likely to introduce inconsistencies in the two presentations.
A third problem is the mixing of types of presentations. Going back to the example of height data for a piece of geography, imagine a client that wants to present the data as a course triangle mesh (for viewing from some angle other than above) but with the 10 foot contour lines as polylines to allow snapping or some other interactive use. Additionally, the client wants to use the 1-foot contour lines or alternatively some satellite images to create pixel textures for the triangles. With a monolithic stylization approach, such merging of data could be difficult and would most likely duplicate the code of creating the various contour lines.